package com.alan.xm.lib.utils;

import android.content.Context;
import android.text.TextUtils;
import android.widget.ImageView;
import android.widget.RadioButton;

import androidx.annotation.NonNull;

import com.alan.xm.lib.R;
import com.bumptech.glide.GenericTransitionOptions;
import com.bumptech.glide.Glide;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.load.MultiTransformation;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.load.resource.bitmap.GranularRoundedCorners;
import com.bumptech.glide.load.resource.bitmap.Rotate;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.module.AppGlideModule;
import com.bumptech.glide.request.RequestOptions;

import jp.wasabeef.glide.transformations.BlurTransformation;


public class GlideUtils {


    /**
     * 设置 图片
     *
     * @param context   上下文
     * @param imageView 图片组件
     * @param url       图片地址
     * @param errorRes  默认图或加载错误图片
     */
    public static void setImageView(Context context, @NonNull ImageView imageView, String url, int errorRes) {
        if (TextUtils.isEmpty(url)) {
            return;
        }
        Glide.with(context).load(url).placeholder(errorRes).error(errorRes).into(imageView);

    }


    /**
     * 设置 圆形图片
     *
     * @param context   上下文
     * @param imageView 图片组件
     * @param url       图片地址
     * @param errorRes  加载失败图片，默认图
     */
    public static void setCircleView(Context context, @NonNull ImageView imageView, String url, int errorRes) {
        if (TextUtils.isEmpty(url)) {
            return;
        }
        Glide.with(context)
                .load(url)
                .placeholder(errorRes)
                .error(errorRes)
                .circleCrop()
                .into(imageView);
    }


    /**
     * 设置高斯模糊 图片
     *
     * @param context 上下文
     * @param imageView 图片组件
     * @param url 图片地址
     * @param errorRes 加载失败图片，默认图
     */
    public static void setBlurImageView(Context context, @NonNull ImageView imageView, String url, int errorRes) {
        if (TextUtils.isEmpty(url)) {
            return;
        }
//        MultiTransformation multiTransformation = new MultiTransformation(new BlurTransformation(60));
//        Glide.with(context)
//                .load(url)
//                .apply(RequestOptions.overrideOf(500, 500))
//                .apply(RequestOptions.bitmapTransform(multiTransformation))
//                .placeholder(errorRes)
//                .error(errorRes)
//                .into(imageView);

        MultiTransformation multiTransformation = new MultiTransformation(new BlurTransformation(60));
        Glide.with(context)
                .load("http://png.test.com/a.png")//图片地址 网络地图/文件地址/资源ID
                .centerCrop()//会缩放图片让图片充满整个ImageView的边框，然后裁掉超出的部分，ImageVIew会被完全填充满，但是图片可能不能完全显示出。
                .fitCenter()//会缩放图片让两边都相等或小于ImageView的所需求的边框。图片会被完整显示，可能不能完全填充整个ImageView。
                .placeholder(errorRes)//占位图
                .error(errorRes)//加载错误图
                .fallback(errorRes)// url为空的占位图
                .circleCrop()
                .dontAnimate()//取消动画
                .override(100,100)//加载图片尺寸，节省内存
//                .transform(GenericTransitionOptions.with(R.anim.test))//设置自定义动画
                .transform(new CircleCrop())// 加载圆形图片
                .transform(new RoundedCorners(30))//加载圆角为30的图片
                .transform(new GranularRoundedCorners(30f,80f,80f,30f))//加载4个圆角不同的图片
                .transform(new Rotate(90))//旋转90度
                .diskCacheStrategy(DiskCacheStrategy.ALL)//设置缓存策略
                // DiskCacheStrategy.ALL 缓存所有类型的图片 (默认行为)
                // DiskCacheStrategy.NONE 什么也不缓存
                // DiskCacheStrategy.SOURCE 只缓存全尺寸图. 上面例子里的1000x1000像素的图片
                // DiskCacheStrategy.RESULT 只缓存最终降低分辨后用到的图片
                .apply(RequestOptions.bitmapTransform(multiTransformation))//高斯模糊
                .into(imageView);

    }
}
